পলিমরফিজম এবং abstract ক্লাস

পলিমরফিজম এবং abstract ক্লাস সি শার্প (C#) এর অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিং (OOP) এর গুরুত্বপূর্ণ বৈশিষ্ট্য। পলিমরফিজমের মাধ্যমে একাধিক রূপে একই কার্যাবলী প্রকাশ করা সম্ভব হয়, এবং abstract ক্লাস এমন একটি ভিত্তি প্রদান করে যার ওপর ভিত্তি করে নির্দিষ্ট বাস্তবায়ন গঠন করা যায়।

পলিমরফিজম (Polymorphism)

পলিমরফিজম হলো এমন একটি বৈশিষ্ট্য যা একই মেথড বা অপারেশনের বিভিন্ন রূপ প্রকাশ করতে দেয়। এটি মূলত দুটি ধরনের হতে পারে:

  1. স্ট্যাটিক পলিমরফিজম (Static Polymorphism) বা মেথড ওভারলোডিং (Method Overloading)
  2. ডায়নামিক পলিমরফিজম (Dynamic Polymorphism) বা মেথড ওভাররাইডিং (Method Overriding)

মেথড ওভারলোডিং (Method Overloading)

মেথড ওভারলোডিং হলো একই নামের মেথড একাধিকবার সংজ্ঞায়িত করা, যেখানে প্রতিটি মেথডের প্যারামিটার ভিন্ন হয়। এটি কম্পাইল টাইমে কাজ করে, তাই একে স্ট্যাটিক পলিমরফিজম বলা হয়।

public class MathOperations
{
    public int Add(int a, int b)
    {
        return a + b;
    }

    public double Add(double a, double b)
    {
        return a + b;
    }
}

মেথড ওভাররাইডিং (Method Overriding)

মেথড ওভাররাইডিং হলো বেস ক্লাসের virtual মেথডকে ডেরাইভড ক্লাসে override করে পুনরায় সংজ্ঞায়িত করা। এটি রানটাইমে কাজ করে, তাই একে ডায়নামিক পলিমরফিজমও বলা হয়।

public class Animal
{
    public virtual void MakeSound()
    {
        Console.WriteLine("Animal makes a sound");
    }
}

public class Dog : Animal
{
    public override void MakeSound()
    {
        Console.WriteLine("Dog barks");
    }
}

উদাহরণ: পলিমরফিজম

class Program
{
    static void Main(string[] args)
    {
        Animal animal = new Animal();
        animal.MakeSound(); // Output: Animal makes a sound

        Animal dog = new Dog();
        dog.MakeSound();    // Output: Dog barks
    }
}

Abstract ক্লাস (Abstract Class)

Abstract ক্লাস হলো এমন একটি ক্লাস যেটি আংশিক বাস্তবায়ন প্রদান করে এবং পুরোপুরি ইনস্ট্যান্টিয়েট করা যায় না। অর্থাৎ, abstract ক্লাস থেকে সরাসরি কোনো অবজেক্ট তৈরি করা যায় না। abstract ক্লাসে এমন কিছু মেথড থাকতে পারে যেগুলোর বাস্তবায়ন নির্ধারণ করা হয় না। ডেরাইভড ক্লাসে সেই মেথডগুলোকে override করে বাস্তবায়ন করতে হয়।

Abstract ক্লাসের গঠন

public abstract class Shape
{
    public abstract double GetArea(); // Abstract method
}

উদাহরণ: Abstract ক্লাস এবং পলিমরফিজম

public abstract class Shape
{
    // Abstract method, ডেরাইভড ক্লাসে ওভাররাইড করতে হবে
    public abstract double GetArea();

    // Non-abstract method
    public void DisplayShapeType()
    {
        Console.WriteLine("This is a shape.");
    }
}

public class Circle : Shape
{
    private double radius;

    public Circle(double radius)
    {
        this.radius = radius;
    }

    // Overriding the abstract method
    public override double GetArea()
    {
        return Math.PI * radius * radius;
    }
}

public class Rectangle : Shape
{
    private double width;
    private double height;

    public Rectangle(double width, double height)
    {
        this.width = width;
        this.height = height;
    }

    // Overriding the abstract method
    public override double GetArea()
    {
        return width * height;
    }
}

উদাহরণ প্রোগ্রাম: Abstract ক্লাস ব্যবহার

class Program
{
    static void Main(string[] args)
    {
        Shape circle = new Circle(5.0);
        Shape rectangle = new Rectangle(4.0, 6.0);

        Console.WriteLine("Circle Area: " + circle.GetArea());      // Output: Circle Area: 78.5398
        Console.WriteLine("Rectangle Area: " + rectangle.GetArea()); // Output: Rectangle Area: 24
    }
}

Abstract ক্লাস এবং পলিমরফিজমের বৈশিষ্ট্য

  1. Abstract মেথড: Abstract ক্লাসের মধ্যে থাকা abstract মেথড ডেরাইভড ক্লাসে override করতে হয়।
  2. Non-abstract মেথড: Abstract ক্লাসে এমন কিছু মেথড থাকতে পারে যেগুলো সম্পূর্ণ সংজ্ঞায়িত।
  3. অবজেক্ট তৈরি করা যায় না: Abstract ক্লাস থেকে সরাসরি কোনো অবজেক্ট তৈরি করা যায় না।
  4. পলিমরফিজম: Abstract ক্লাস পলিমরফিজমকে সমর্থন করে, কারণ ডেরাইভড ক্লাসগুলো বেস ক্লাসের abstract মেথডগুলোকে আলাদাভাবে বাস্তবায়ন করে।

Abstract ক্লাস বনাম ইন্টারফেস

বৈশিষ্ট্যAbstract ক্লাসইন্টারফেস
ইনস্ট্যান্টিয়েট করাসরাসরি ইনস্ট্যান্টিয়েট করা যায় নাসরাসরি ইনস্ট্যান্টিয়েট করা যায় না
মেম্বার সংজ্ঞায়িতAbstract এবং non-abstract মেথড থাকতে পারেশুধুমাত্র Abstract মেথড থাকতে পারে
মাল্টিপল ইনহেরিটেন্সএকাধিক Abstract ক্লাস থেকে ইনহেরিট করা যায় নাএকাধিক ইন্টারফেস থেকে ইনহেরিট করা যায়
অ্যাক্সেস মডিফায়ারবিভিন্ন অ্যাক্সেস মডিফায়ার থাকতে পারেমেথড সব সময় public থাকে

সারসংক্ষেপ

পলিমরফিজম সি শার্পে বিভিন্ন পরিস্থিতিতে একই ফাংশনালিটির বিভিন্ন রূপ প্রকাশ করতে দেয়, যা কোডের কার্যকারিতা বৃদ্ধি করে। Abstract ক্লাস এমন একটি ক্লাস যা আংশিক বাস্তবায়ন প্রদান করে এবং নির্দিষ্ট মেথডগুলোর জন্য ডেরাইভড ক্লাসে বাস্তবায়ন নিশ্চিত করে। Abstract ক্লাস এবং পলিমরফিজম একসঙ্গে ব্যবহার করে কোডের পুনরায় ব্যবহারযোগ্যতা ও গঠন উন্নত করা যায়।

Content added By

আরও দেখুন...

Promotion